const mysql = require('mysql2/promise');

// 创建一个连接池配置
const pool = mysql.createPool({
    host: 'localhost',        // 数据库主机
    user: 'root',             // 数据库用户名
    password: '123456',// 数据库密码
    database: 'mydatabase',   // 要使用的数据库名称
    waitForConnections: true, // 如果没有可用的连接，等待直到有可用的连接
    connectionLimit: 10,      // 连接池的最大数量
    queueLimit: 0             // 当连接池满时，是否允许新连接排队等候 (0: 允许排队, -1: 不允许排队)
});

const initializeDatabase = async () => {
      // 检查数据库是否存在
        await pool.query('SHOW DATABASES LIKE "mydatabase"');
        const [rows] = await pool.query('SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = "mydatabase"');
        // 如果不存在，则创建数据库
        if (rows.length === 0) {
            await pool.query('CREATE DATABASE mydatabase');
            console.log('Database created successfully.');
        }

        // 使用数据库
        await pool.query('USE mydatabase');

        // 检查 users 表是否存在
        await pool.query('SHOW TABLES LIKE "users"');
        const [tables] = await pool.query('SHOW TABLES');
        let tableExistUsres = tables.find(table => table['Tables_in_mydatabase'] === 'users');
        let tableExistInvite = tables.find(table => table['Tables_in_mydatabase'] === 'invite');
        let tableExistAbout = tables.find(table => table['Tables_in_mydatabase'] === 'about');
        let tableExistHome = tables.find(table => table['Tables_in_mydatabase'] === 'home');
        let tableExistHome_detail = tables.find(table => table['Tables_in_mydatabase'] === 'home_detail');
        
        // 如果不存在，则创建用户表
        if (!tableExistUsres) {
            console.log('初始化表...');
            await pool.query(`
                CREATE TABLE users (
                    id INT AUTO_INCREMENT PRIMARY KEY,
                    username VARCHAR(255) NOT NULL UNIQUE,
                    email VARCHAR(255) NOT NULL UNIQUE,
                    password VARCHAR(255) NOT NULL,
                    avatar VARCHAR(255)
                )
            `);
             // 插入示例数据
            await pool.query(`INSERT IGNORE INTO users (username, email, password, avatar) VALUES (?, ?, ?, ?)`, ['admin', '1956410213@qq.com', '123456', 'path/to/avatar.jpg']);
            await pool.query(`INSERT IGNORE INTO users (username, email, password, avatar) VALUES (?, ?, ?, ?)`, ['ns', 'jane@example.com', '123456', 'path/to/avatar.png']);
            console.log('users');
        }

        if(!tableExistInvite){
            await pool.query(`
                CREATE TABLE invite (
                    id INT AUTO_INCREMENT PRIMARY KEY,
                    inviteName VARCHAR(50) NOT NULL,
                    inviteDateOne VARCHAR(50) NOT NULL,
                    inviteDateTwo VARCHAR(50) NOT NULL,
                    inviteAddress VARCHAR(200) NOT NULL,
                    inviteLongitude VARCHAR(50) NOT NULL,
                    inviteLatitude VARCHAR(50) NOT NULL,
                    navigation_title VARCHAR(100) NOT NULL,
                    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                )
            `);
             // 插入示例数据
            await pool.query(`INSERT IGNORE INTO invite (inviteName, inviteDateOne,inviteDateTwo,inviteAddress,inviteLongitude,inviteLatitude,navigation_title) VALUES (?, ?, ?, ?, ?, ?, ?)`, ['Mr.王&Miss.宁', '谨定于2025年10月10日','农历2025年十一月二十日 举办盛大婚礼','地址：广西贵港市港南区东津镇','109.81446','23.06953','东津镇']);
            console.log('invite');
        }

        if(!tableExistAbout){
            await pool.query(`
                CREATE TABLE about (
                        id INT AUTO_INCREMENT PRIMARY KEY,
                        top_title VARCHAR(50) NOT NULL,
                        content VARCHAR(500) NOT NULL,
                        contact_way VARCHAR(50) NOT NULL,
                        created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                )
            `);
             // 插入示例数据
            await pool.query(`INSERT INTO about (top_title,content,contact_way) 
                        VALUES ('亲爱的用户们','首先，我们要向您表达最深切的感谢。感谢您选择并使用我们的应用——[应用名称]。从第一天到现在，每一位用户的反馈和支持都是我们不断前进的动力。我们一直致力于为您提供最好的体验和服务。无论是简洁易用的界面，还是强大的功能，我们都希望能满足您的需求。您的每一次建议和反馈都对我们至关重要，它们帮助我们不断完善和改进这个应用。
                        在过去的时间里，我们收到了很多积极的反馈和宝贵的建议。您的满意，就是我们最大的成就感。我们非常珍视这段旅程中与您的每一份连接，也深知没有您的支持，这一切无从谈起。未来，我们也将继续努力，带来更多新功能和完善现有服务，以确保每一
                        位用户都能获得更好的使用体验。再次感谢您的信任与支持，您的每一个好评都让我们充满了动力。请继续保持对我们的关注和支持，我们承诺将会做得更好！如果您在未来有任何问题或需求，请随时与我们联系。您的满意度永远是我们追求的目标。最后，衷心祝愿您生活愉快，事业成功！','18877532295');`);
            console.log('about');
        }

        if(!tableExistHome){
            await pool.query(`
                CREATE TABLE home (
                id INT AUTO_INCREMENT PRIMARY KEY,
                title VARCHAR(50) NOT NULL,
                content VARCHAR(500) NOT NULL,
                cover_plan VARCHAR(50) NOT NULL,
                created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            )
            `)
             // 插入示例数据
             await pool.query(`INSERT INTO home (title, content,cover_plan) VALUES (?, ?, ?)`, 
                ['花海的浪漫','这里写一篇文字', 'john@example.com']);
        }

        if(!tableExistHome_detail){
            await pool.query(`
                CREATE TABLE home_detail (
                id INT AUTO_INCREMENT PRIMARY KEY,
                img VARCHAR(50) NOT NULL,
                home_id INT NOT NULL,
                created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                FOREIGN KEY (home_id) REFERENCES home(id)
                )
            `)
             // 插入示例数据
             await pool.query(`INSERT INTO home_detail (img, home_id) VALUES (?, ?)`, 
                ['john1.jpg', 1]);
                await pool.query(`INSERT INTO home_detail (img, home_id) VALUES (?, ?)`, 
                    ['john2.jpg', 1]);
        }

        console.log('检查数据库和表成功');
};
initializeDatabase();

module.exports = pool;